package com.wwj.study.observer.proxy;

import com.wwj.study.observer.core.Event;
import com.wwj.study.observer.core.EventLisenter;

import java.lang.reflect.Method;

/**
 * @Author: wuweijun
 * @Date: 2018/11/20 15:33
 */

//测试类
public class ObserverTest {
    public static void main(String[] args) throws NoSuchMethodException {

        //new 一个观察者
//        Observer observer = new Observer();
//        //获取观察者方法，回调方法
//        Method method = Observer.class.getMethod("advice", Event.class);
//
//        //new 一个被观察者
//        Subject subject = new Subject();
//
//        //被观察者添加add监听事件，传入：观察者对象，回调方法
//        subject.addLisenter(SubjectEventType.add, observer, method);
//
//        //被观察者，开始操作add方法
//        subject.add();



        Subject subject = new Subject();
        ProxySubject proxySubject= new ProxySubject();
        Object obj = proxySubject.getInstance(subject);
        ISubject instance=(ISubject) obj;
        instance.delete();
        instance.add();
        instance.update();
    }
}
